package com.wjm.shootgame.shoot;

import com.wjm.shootgame.shoot.img.Images;

import java.awt.image.BufferedImage;

/*
* 小蜜蜂类
* */
public class Bee extends FlyingObject implements Award{
    //速度
    public int xSpeed;
    public int ySpeed;

    //奖励类型
    public int award;


    //构造方法初始化
    public Bee(){
//        this.width=60;
//        this.height=43;
//        this.x=(int)(Math.random()*(512-this.width));
//        this.y= -this.height;
        super(60,43);
        this.xSpeed=2;
        this.ySpeed=2;
        //在生成小蜜蜂对象时，就确定小蜜蜂的奖励类型
        award = (int) (Math.random()*10);
    }


    //用于输出初始化的值
    @Override
    public String toString() {
        return "Bee{" +
                "xSpeed=" + xSpeed +
                ", ySpeed=" + ySpeed +
                ", width=" + width +
                ", height=" + height +
                ", x=" + x +
                ", y=" + y +
                '}';
    }

    /**
     * 重写的获取方法
     * @return 返回存放图片的数组
     */
    //用来控制获取图片的下标
    int index = 1;
    @Override
    public BufferedImage getImage() {
        if (state == LIVE){
            //返回飞机图片
            return Images.beeImage[0];
        }else if (state == DEAD){
            BufferedImage image = Images.beeImage[index++];
            //如果index长度超过数组长度，就改变它的状态从容让index不在增长
            if (index == Images.beeImage.length){
                state = REMOVE;
            }
            //返回爆炸图片
            return image;
        }
        return null;
    }

    /**
     * 重写的移动方法
     */
    @Override
    public void move() {
        y+=ySpeed;
        x+=xSpeed;
        //当x轴坐标大于最大值，或者小于最小值的时候，对x轴的速度xSpeed取反
        if (x>World.WIDTH-width || x<0){
            xSpeed = -xSpeed;
        }
    }

    /**
     * 判断是否越界的方法
     * @return 越界返回true，没越界返回false
     */
    @Override
    public boolean isOutBound() {
        if (this.y>World.HEIGHT){
            return true;
        }else {
            return false;
        }
    }

    /**
     * 这是奖励类型的方法
     * @return 返回的是常量表示的是奖励的类型
     */
    @Override
    public int awardType() {
        //award的随机数是[0,10]
        if (award>5){
            //这是接口中的常量（表示双倍火力类型）
            return DOUBLE_FIRE;
        }else {
            //这个表示增加生命类型
            return AWARD_LIFE;
        }
    }
}
